// 页面: 工作台-租赁管理-合同: 详情
const $app = getApp()
Page({
  data: {
    display: 0, // 当前显示内容
    // ===== 参数 =====
    param: {
      contractNum: null, // 合同编号
      pageNo: 1, // 第几页
      pageSize: 10 // 一页几条数据
    },
    // ===== 列表数据 =====
    listData: {
      display: [{ id: 0, name: '基本信息'}, { id: 1, name: '账单明细'}],
      paymentType: [{ id: '0', name: '保证金' }, { id: '1', name: '租金' }]
    },
    // ===== 基础信息 相关数据 =====
    baseData: {}, // 基础信息
    fileKeys: ['contractAttachtPath', 'contractAttachtPathName', 'contractFilePath', 'contractFilePathName'],
    baseInfo: [{ // 配置信息
      title: '合同信息',
      data: {
        contractNum: { name: '合同编号' },
        assetsNum: { name: '资产编号' },
        agreeNum: { name: '审批单号' },
        createDepartName: { name: '发起部门' },
        createTime: { name: '创建日期' },
        contractName: { name: '合同名称' },
        manageUnitName: { name: '管理单位' },
        contractMoney: { name: '合同金额', after: ' 元' },
        tenantName: { name: '签订租户' },
        startTime: { name: '开始日期' },
        endTime: { name: '结束日期' },
        signTime: { name: '签订时间' },
        signPlace: { name: '签订地点' },
        remark: { name: '备注' }
      }
    }, {
      title: '合同附件',
      data: {
        contractAttachtPath: { type: 'file', urlKey: 'contractAttachtPathArr', nameKey: 'contractAttachtPathNameArr' },
      }
    }, {
      title: '正式合同',
      data: {
        contractFilePath: { type: 'file', urlKey: 'contractFilePathArr', nameKey: 'contractFilePathNameArr' }
      }
    }],
    // ===== 账单明细 相关数据 =====
    billData: [], // 账单明细
    total: 0, // 数据总数
    refreshing: false, // 是否正在刷新中
    loading: false, // 是否正在加载中
    backTop: false, // 滚动条回到顶部(只要改变值就回到顶部)
    billInfo: {
      paymentTypeName: { name: '租金类型' },
      paymentBatch: { name: '租赁周期' },
      paymentTime: { name: '收费日期' },
      paymentMoney: { name: '收缴金额', after: ' 元' },
      paymentScale: { name: '租金占比', after: ' %' }
    }
    // ===== end =====
  },
  model (e) { $app.$common_wx.model(e, this) }, // 双向绑定
  // ========== 生命周期: 页面加载 ==========
  onLoad: function (options) {
    if (!options.contractNum) return
    this.setData({ ['param.contractNum']: options.contractNum })
    this.getBaseData() // 获取基本信息
  },
  // ========== 生命周期: 页面初次渲染完成 ==========
  onReady: function () {},
  // ========== 生命周期: 页面显示 ==========
  onShow: function () {},
  // ========== 生命周期: 页面隐藏 ==========
  onHide: function () {},
  // ========== 生命周期: 页面卸载 ==========
  onUnload: function () {},
  // ========== '当前显示内容'改变时 ==========
  displayChange () {
    if (this.data.param.contractNum === 0) {
      this.getBaseData() // 获取基本信息
    } else {
      this.getBillData() // 获取账单明细
    }
  },
  // ========== 获取基本信息 ==========
  getBaseData () {
    if (this.data.baseData.id) return
    $app.$common.openLoading() // 开启加载
    $app.$api.contract.getContractByNum(this.data.param).then(({ data }) => {
      console.log('api-基本信息', data)
      let newData = data || {}
      this.data.fileKeys.forEach(k => { newData[k + 'Arr'] = newData[k] ? newData[k].split(',') : [] })
      this.setData({ baseData: newData })
      $app.$common.closeLoading() // 关闭加载
    }).catch(({ type, res }) => {})
  },
  // ========== 获取账单明细 ==========
  getBillData (RAndL) {
    const dataKey = 'billData'
    if (!RAndL) {
      $app.$common.openLoading() // 开启加载
      this.setData({ ['param.pageNo']: 1 })
    }
    $app.$api.contract.getContractPayByNumDetail({
      '*': true,
      '/': true,
      ...this.data.param
    }).then(({ data, count }) => {
      console.log('api-账单明细', data, count)
      let newData = data || []
      for (const i in newData) {
        const b = newData[i]
        const arr = this.data.listData.paymentType
        b.paymentTypeName = $app.$common.arrFindEl(arr, b.paymentType, 'id', 'name')
      }
      const total = count || 0
      if (RAndL === 'refresh') { // 刷新
        this.setData({ refreshing: false })
      } else if (RAndL === 'load') { // 加载
        newData = this.data[dataKey].concat(newData)
        this.setData({ loading: false })
      } else {
        this.setData({ backTop: !this.data.backTop })
      }
      this.setData({ [dataKey]: newData, total })
      $app.$common.closeLoading() // 关闭加载
    }).catch(({ type, res }) => {
      console.log('api-合同数据', type, res)
      let newData = []
      let total = 0
      if (RAndL === 'refresh') { // 刷新
        this.setData({ refreshing: false })
      } else if (RAndL === 'load') { // 加载
        newData = this.data[dataKey]
        total = this.data.total
        const pageNo = this.data.param.pageNo - 1 // 页数
        this.setData({ loading: false, pageNo: pageNo })
      } else {
        this.setData({ backTop: !this.data.backTop })
      }
      this.setData({ [dataKey]: newData, total })
      $app.$common.closeLoading() // 关闭加载
      $app.$common.message('数据获取失败', 'error') // 提示信息
    })
  },
  // ========== 刷新 ==========
  refresh () {
    this.setData({ ['param.pageNo']: 1 })
    this.getBillData('refresh') // 获取数据
  },
  // ========== 加载 ==========
  load () {
    const dataKey = 'billData'
    if (this.data[dataKey].length >= this.data.total) {
      this.setData({ loading: false })
      return
    }
    const pageNo = this.data.param.pageNo + 1
    this.setData({ ['param.pageNo']: pageNo })
    this.getBillData('load') // 获取数据
  }
})